package com.cencat.merchant.vo;

import com.cencat.common.enums.AuditStatus;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 商家审核历史VO
 * 
 * @author cencat
 * @since 2024-01-01
 */
@Data
@Schema(description = "商家审核历史VO")
public class MerchantAuditHistoryVO {

    /**
     * 审核记录ID
     */
    @Schema(description = "审核记录ID")
    private Long id;

    /**
     * 商家ID
     */
    @Schema(description = "商家ID")
    private Long merchantId;

    /**
     * 商家名称
     */
    @Schema(description = "商家名称")
    private String merchantName;

    /**
     * 审核状态
     */
    @Schema(description = "审核状态")
    private AuditStatus auditStatus;

    /**
     * 审核状态描述
     */
    @Schema(description = "审核状态描述")
    private String auditStatusDesc;

    /**
     * 审核备注
     */
    @Schema(description = "审核备注")
    private String auditRemark;

    /**
     * 审核时间
     */
    @Schema(description = "审核时间")
    private LocalDateTime auditTime;

    /**
     * 审核人ID
     */
    @Schema(description = "审核人ID")
    private Long auditorId;

    /**
     * 审核人姓名
     */
    @Schema(description = "审核人姓名")
    private String auditorName;

    /**
     * 审核类型
     */
    @Schema(description = "审核类型：1-新商家审核，2-资质变更审核，3-信息修改审核")
    private Integer auditType;

    /**
     * 审核类型描述
     */
    @Schema(description = "审核类型描述")
    private String auditTypeDesc;

    /**
     * 审核材料文件列表
     */
    @Schema(description = "审核材料文件列表")
    private List<String> auditFiles;

    /**
     * 审核耗时（分钟）
     */
    @Schema(description = "审核耗时（分钟）")
    private Long auditDuration;

    /**
     * 审核优先级
     */
    @Schema(description = "审核优先级：1-低，2-中，3-高")
    private Integer priority;

    /**
     * 审核优先级描述
     */
    @Schema(description = "审核优先级描述")
    private String priorityDesc;

    /**
     * 是否需要现场核查
     */
    @Schema(description = "是否需要现场核查")
    private Boolean needFieldCheck;

    /**
     * 现场核查结果
     */
    @Schema(description = "现场核查结果")
    private String fieldCheckResult;

    /**
     * 审核流程ID
     */
    @Schema(description = "审核流程ID")
    private String workflowId;

    /**
     * 审核节点
     */
    @Schema(description = "审核节点")
    private String auditNode;

    /**
     * 下一审核人ID
     */
    @Schema(description = "下一审核人ID")
    private Long nextAuditorId;

    /**
     * 下一审核人姓名
     */
    @Schema(description = "下一审核人姓名")
    private String nextAuditorName;

    /**
     * 审核标签
     */
    @Schema(description = "审核标签")
    private List<String> auditTags;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

    /**
     * 操作IP
     */
    @Schema(description = "操作IP")
    private String operateIp;

    /**
     * 操作设备
     */
    @Schema(description = "操作设备")
    private String operateDevice;

    /**
     * 审核结果附件
     */
    @Schema(description = "审核结果附件")
    private List<String> resultFiles;
}